﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Systemet.SideViews
{
    public partial class SidePrognos : UserControl
    {
        private Views.Prognoskort progMainKort;
        private int? user;
        private Domain.PrognosController prgController;
        private Domain.ProdukController prdController;
        private IEnumerable<Produktregister> produkter;
        public SidePrognos()
        {
            InitializeComponent();
            AccessController.Instance.SidMeny = this;
        }
        private void SidePrognosUppfoljning_Load(object sender, EventArgs e)
        {
            FlowController.Instance.ShowSpecifikMenu(FlowController.Instance.MainTabView[0]);
            progMainKort = (Views.Prognoskort)AccessController.Instance.ReturnMainView();
           user = AccessController.Instance.LoggedInUser.RoleID;
           cBProdomrPrognos.Enabled = false;
           if (user == 1 || user == 4)
           {
               updateComboboxes();
               cBProdomrPrognos.Enabled = true;
           }
           if (user == 5)
           {
               updateComboboxes();
               cBProdomrPrognos.SelectedIndex = 1;

           }
           if (user == 6)
           {
               updateComboboxes();
               cBProdomrPrognos.SelectedIndex = 2;

           }

        }

        public void updateComboboxes()
        {
            prdController = new Domain.ProdukController();
            produkter = prdController.Produktlista;
            FilterComboboxes();

        }

        private void FilterComboboxes()
        {
            
            string prodomrade;

            
                if (cBProdomrPrognos.Text == "Alla")
                {
                    prodomrade = "";

                }
                else
                {
                    prodomrade = cBProdomrPrognos.Text;
                }

                foreach (Produktregister p in produkter)
            {

                if (p.avdelningsnamn.Contains(prodomrade) && (p.Produktkategori.produktKategoriNamn.Contains(cBProdKatP.Text)) && 
                    (p.Produktgrupp.produktGruppNamn.Contains(cBProdGruppP.Text)) && p.produkt.Contains(cBProdNamnP.Text))
                {
                    if (!cBProdKatP.Items.Contains(p.Produktkategori.produktKategoriNamn))
                    {
                        cBProdKatP.Items.Add(p.Produktkategori.produktKategoriNamn);
                    }
                    if (!cBProdGruppP.Items.Contains(p.Produktgrupp.produktGruppNamn))
                    {
                        cBProdGruppP.Items.Add(p.Produktgrupp.produktGruppNamn);
                    }
                    if (p.Produktgrupp.produktGruppNamn == cBProdGruppP.Text || cBProdGruppP.Text == "")
                    {
                        if (!cBProdNamnP.Items.Contains(p.produkt))
                        {
                            cBProdNamnP.Items.Add(p.produkt);
                        }
                    }
                }
            }
        }
        private void OnSearchIndexChange(object sender, EventArgs e)
        {
            string avd = cBProdomrPrognos.Text;
            if(cBProdomrPrognos.Text == "Alla")
            {
                avd = "";
            }

            if (sender != cBProdNamnP)
            {
                cBProdNamnP.Items.Clear();
                cBProdNamnP.Text = "";
                if (sender != cBProdGruppP)
                {
                    clearCmbs();
                }
                FilterComboboxes();
            }
            prgController = new Domain.PrognosController();
            prgController.RetrieveFilterOptions(avd, cBProdKatP.Text, cBProdGruppP.Text, cBProdNamnP.Text);
        }
  
        private void clearCmbs()
        {

            cBProdNamnP.Items.Clear();
            cBProdGruppP.Items.Clear();
            cBProdGruppP.Text = "";
            cBProdNamnP.Text = "";
        }

        public Views.Prognoskort ProgMainKort
        {
            get { return progMainKort; }
            set { progMainKort = value; }
        }




    }
}
